Реализация фонового Interceptor ротации токенов в мобильном приложении
Перехват ошибок HTTP 401, заморозка очереди запросов, вызов API refresh и разморозка сессии.
NoteКраткая карточка задачи
- Репозиторий / Компонент:
mobile-app(Клиентское приложение iOS / Android). - Категория: Фронтенд.
- Взаимодействие: Фоновый вызов
HTTP POST /api/v1/auth/refresh. - Статус: Готово к реализации
- Инструкция по шагам:
- Реализация Interceptor: На уровне сетевого клиента (например, Dio Interceptor / Axios Interceptor) реализовать перехватчик ответов сервера. При получении ошибки
HTTP 401 Unauthorizedна любой транзакционный запрос, временно приостановить (заморозить) выполнение текущего и всех последующих исходящих запросов, поместив их в буферную очередь (Interceptor Queue). - На Шаге 1 (Фоновый вызов): Извлечь из защищенного хранилища сохраненный
refresh_token. Инициировать скрытый фоновый HTTP-запросPOST /api/v1/auth/refresh. - Обработка критического отзыва: Если метод ротации возвращает ошибку
HTTP 401 Unauthorized(сессия полностью просрочена или скомпрометирована), полностью очистить буферную очередь запросов, вызвать методSecureStorage.deleteAll()и совершить жесткий редирект пользователя на экран Логина. - На Шаге 10 (Перезапись и разморозка): При успешном получении ответа
HTTP 200 OK, извлечь новые значенияtoken(Access) иrefresh_token. Перезаписать их в iOS Keychain / Android Keystore с помощьюSecureStorage.write(...). Обновить авторизационный токен в заголовках всех замороженных в буфере запросов и принудительно запустить их повторную отправку (разморозить очередь).
- Реализация Interceptor: На уровне сетевого клиента (например, Dio Interceptor / Axios Interceptor) реализовать перехватчик ответов сервера. При получении ошибки
:::